
"""
# 迭代2 ：新增一个查询功能
1. 用户查询功能必须是在登录以后才能使用，否则给出权限不足 。
2. 若输入的用户名正确，返回对应登录用户的信息，password字段不显示。
3. 若输入的用户名不正确 ，给出无查询结果的提示
4. 支持模糊查询
"""


# 定义用户默认的数据
user_list = [{'role':'admin','account':'admin','password':'123456','dept':'test'},{'account':'test','password':'123456','role':'user','dept':'test'}]

# 定义默认发返回结果
result = {'code':0,'message':''}


# 定义登录函数
def login(username,password):

    # 1. 如果用户名为空或密码为空 ，给出用户名为空或密码为空
    if username is None or username == '':
        result.update({'code':1,'message':'用户名不能为空！'})
        return result
    if password is None or password == '':
        result.update({'code':2,'message':'密码不能为空！'})
        return result
    # 2. 用户名或密码不存在 ，给出用户名或密码错误

    # 3. 用户名和密码是否匹配 。
    for user_data in user_list:
        if username == user_data.get('account') and password == user_data.get('password'):
            result.update({'code':0,'message':'登录成功','user_list':user_list})
            return result

    # 不匹配的情况，请检查您的用户名或密码是否填写正确
    result.update({'code':3,'message':'登录失败，请检查用户名或密码是否填写正确！'})
    return result


# 用户查询功能
def get_user(username):

    # 1. 判断用户名是否登录 ，若登录可以运行下面的代码，若未登录，返回权限失败
    if result.get('code'):
        result.update({"code":11,"message":"用户未登录，无法查询出结果"})
        return result

    # 2. 若输入的用户名正确进行查询，并且返回结果(支持模糊查询)
    lst = []        # 存放查询到的数据
    for x in user_list:
        account = x.get('account')
        if username in account:
            x.pop('password')           # 删除键所对应的键值对
            lst.append(x)

    # 判断lst里是否有数据 ，若列表不为空 ，返回查询成功
    if lst:
        result.update({"code":10,"message":"查询用户成功","user_list":lst})
        return result



    # 若输入的用户名不正确，则返回无查询结果
    result.update({"code":12,"message":"未查询到用户，请重新输入用户名名!"})
    return result



if __name__ == '__main__':
    flag = True

    while flag:

        # 提供用户的各种操作，比如登录 ，查询 ，退出
        vls = input("请输入操作对应的编号:"
              "\n 1:) 进行登录:"
              "\n 2:) 进行用户查询，请输入用户名"
              "\n q(uit):) 退出操作:"
              "\n 其它字符：) 未知操作，请重输入输入：")

        # 当用户输入未知符号时，进行重新输入
        if vls not in ('q','1','2','quit'):
            print("=" * 30)
            continue

        # 进行登录操作
        if vls == '1':
            username = input("请输入用户名:")
            password = input("请输入密码:")
            login_result = login(username, password)
            print(login_result)
            print("=" * 30)
            continue

        # 进行用户查询
        if vls == '2':
            name = input("请输入查询的用户名：")
            get_result = get_user(name)
            print(get_result)
            print("=" * 30)
            continue

        # 进行退出操作
        if vls in ('q','quit'):
            flag = False
            print("退出成功！")
            print("=" * 30)